<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>引入</title>
</head>

<body>
    <button>测试1</button>
    <button>测试2</button>
    <button>测试3</button>
    <!-- 
        需求：点击某个按钮，提示“点击的是第n个按钮”
     -->
    <script>
        var btns = document.getElementsByTagName('button')
        //  遍历添加监听
        // 这种方式不行，i是全局变量，在点击button时i的值都是3
        // 如果这样写var i = 0; i < btns.length的话，每次循环都会计算btns的长度
        // for (var i = 0, length = btns.length; i < length; i++) {
        //     var btn = btns[i]
        //     btn.onclick = function () {
        //         alert('第' + (i + 1) + '个')
        //     }
        // }

        // 使用index来保存i的值
        // for (var i = 0, length = btns.length; i < length; i++) {
        //     var btn = btns[i]
        //     btn.index = i
        //     btn.onclick = function () {
        //         alert('第' + (this.index + 1) + '个')
        //     }
        // }

        // 使用闭包
        for (var i = 0, length = btns.length; i < length; i++) {
            (function (i) {
                var btn = btns[i]
                btn.onclick = function () {
                    alert('第' + (i + 1) + '个')
                }
            })(i)
        }
        // 可以直接使用let，哈哈
        // for (let i = 0, length = btns.length; i < length; i++) {
        //     let btn = btns[i]
        //     btn.onclick = function () {
        //         alert('第' + (i + 1) + '个')
        //     }
        // }
    </script>
</body>

</html>